\documentclass[a4paper,12pt,answers]{exam}
%% \documentclass[a4paper,12pt]{exam}
\usepackage[bahasa]{babel}
\usepackage{graphicx}
\usepackage{fancyvrb}
\usepackage{epic}
\usepackage{ecltree}
%\usepackage{pstricks,pst-node}
%\usepackage{vaucanson-g}
%\usepackage[a4paper]{geometry}
\usepackage{wordlike}
\usepackage{xifthen}
\usepackage{algorithmic}

%%%%%%% Packages initializations
%% Paper sizes
%\geometry{left=3cm}
%\geometry{top=3cm}
%\geometry{right=3cm}
%\geometry{bottom=3cm}

%\fvset{fontsize=\scriptsize,numbers=left,frame=leftline}
\fvset{fontsize=\scriptsize,frame=leftline}

%% Season-based settings and Conditionals, xifthen
\newboolean{SemesterReguler}
\newboolean{Quiz}
\newboolean{AdaPejabatJurusan}
\newboolean{JawabanLangsung}
\newboolean{NamaAlias}

\setboolean{SemesterReguler}{false}
\setboolean{Quiz}{true}
\setboolean{AdaPejabatJurusan}{false}
% Jawaban ditulis di lembar soal? true kalo iya. Jangan lupa menyalakan opsi answer.
\setboolean{JawabanLangsung}{true}
\setboolean{NamaAlias}{false}

%% Locale
\newcommand{\universitas}{Universitas Trisakti}
\newcommand{\fakultas}{Fakultas Teknologi Industri}
\newcommand{\programstudi}{Teknik Informatika, Sistem Informasi}
\newcommand{\namakuliah}{Organisasi dan Arsitektur Komputer}
\newcommand{\kodekuliah}{IKH351}
\newcommand{\tipeujian}{Kuis 2}
\newcommand{\semester}{Semester Gasal Pendek 2014/2015}
\newcommand{\tanggalujian}{Kamis, 15 Januari 2015}
\newcommand{\waktuujian}{30 menit}
\newcommand{\sifatujian}{Buka buku}
\newcommand{\dosenkoordinator}{(Anung Ariwibowo, MKom)}
\ifthenelse{\boolean{AdaPejabatJurusan}}{
	\newcommand{\kajursekjur}{(Ir. Syaifudin, PhD)}
}
{
	\newcommand{\kajursekjur}{(\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots\ldots)}
}
\newcommand{\ralat}[1]{\textbf{(RALAT: #1)}}

\renewcommand{\solutiontitle}{\noindent\textbf{Jawab:}\par\noindent}
\renewcommand{\partlabel}{\thepartno.}
\vqword{Nomor}
\hqword{Nomor}
\vpword{Poin}
\hpword{Poin}
\vsword{Nilai}
\hsword{Nilai}
\pointsinmargin
\boxedpoints
\addpoints

\pagestyle{headandfoot}
\runningheadrule
\footrule
%\header{\namakuliah \\ \kodekuliah}{}{60.Kul.1TIF/R.0 \\ \tanggalujian}
\firstpageheader{}{}{60.Kul.1TIF/R.0}
\runningheader{\namakuliah \\ \kodekuliah}{}{60.Kul.1TIF/R.0 \\ \tanggalujian}
%%\lhead[]{\namakuliah \\ \kodekuliah}
%%\rhead[]{60.Kul.1TIF/R.0 \\ \tanggalujian}
\cfoot{\iflastpage{Halaman \thepage\ dari \numpages\\Selamat Belajar atas dasar Inisiatif Pribadi.}{Halaman \thepage\ dari \numpages}}
%%\cfoot{\iflastpage{Halaman \thepage\ dari \numpages\\Orang yang dicontek tidak lebih tahu daripada Orang yang mencontek.}{Halaman \thepage\ dari \numpages}}

%% package ecltree
\setlength{\GapWidth}{10mm}
%%%%%%% Packages initializations

\begin{document}
\ifthenelse{\boolean{Quiz}}{
	% SEMESTER PENDEK or QUIZ
	\begin{center}
	% \begin{coverpages}
		{\bf
			\parbox{5.5in}{\centering
				{\Large
					\fakultas\ -- \universitas
					
					\programstudi
				}
				\vspace{0.5cm}
				
				{\large
					\semester
					
					\namakuliah\ -- \kodekuliah
				}
				\vspace{0.5cm}
				
				{\small
					\tipeujian , \tanggalujian\
					
					\waktuujian\ -- \sifatujian
				}
				\vspace{1.5cm}
			}
		}
		\vspace{0.5cm}
		\hbox to \textwidth{Nama : \enspace\hrulefill}
		\vspace{0.5cm}
		\hbox to \textwidth{NIM : \enspace\hrulefill}
		\ifthenelse{\boolean{NamaAlias}}{
			\vspace{0.5cm}
			\hbox to \textwidth{E-mail: \enspace\hrulefill}
			\vspace{0.5cm}
			\hbox to \textwidth{Nama alias \footnote{Nama alias digunakan untuk mengumumkan nilai.}: \enspace\hrulefill}
		}
		
		\vspace{1.0cm}
		\gradetable[h][questions]
	% \end{coverpages}
	\end{center}
}
{
	% EXAM
	\begin{center}
	  {\bf
	    {\centering {\Large
	      \fakultas\ -- \universitas } \\ \large{ \programstudi } \\ \normalsize{\tipeujian \\ \semester }
	    }
	    \vspace{0.5cm}
	    \hrule
	    {\small
	      \vspace{1cm}
	      \begin{tabular}{p{0.5\textwidth}p{0.3\textwidth}}
	        \namakuliah\ -- \kodekuliah & \multicolumn{1}{r}{\sifatujian} \\
	        \tanggalujian\ & \multicolumn{1}{r}{\waktuujian} \\
	        & \\
	        \multicolumn{1}{c}{\emph{Koordinator Mata Kuliah}} &
	        \multicolumn{1}{c}{\emph{Diperiksa dan Disetujui oleh}} \\
	        & \multicolumn{1}{c}{Ketua Progam Studi / Sekjur} \\
	        & \\
	        & \\
	        & \\
	        \multicolumn{1}{c}{\dosenkoordinator} & \multicolumn{1}{c}{\kajursekjur} \\
	      \end{tabular}
	    }
	  }
	  \vspace{0.5cm}
	  \hrule
	  \vspace{0.1cm}
	  Ujian ini terdiri atas \numpages~halaman, \numquestions~soal, dan \numpoints~poin.
		\vspace{0.5cm}
		\gradetable[h][questions]
	\end{center}
		\vspace{0.5cm}
		\hbox to \textwidth{Nama : \enspace\hrulefill}
		\vspace{0.5cm}
		\hbox to \textwidth{NIM : \enspace\hrulefill}
}

\begin{questions}
%	\fullwidth{{\par\centering \textbf{Soal Wajib: Kerjakan 4 soal di bawah ini.}\par}}
  \question Dapatkan operasi pengurangan maupun penambahan berikut ini dengan menggunakan representasi \emph{two’s complement}.
  \begin{parts}
    \part[10] 111000 + 110011
    \part[10] 111000 + 110011
    \part[10] 11001100 − 101110
  \end{parts}
  \begin{solution}
    \vspace{5.0cm}
  \end{solution}
  
  
  \question Tuliskan representasi bilangan-bilangan berikut ini masing-masing dalam notasi \emph{one’s complement} dan \emph{two’s complement}. Asumiskan bilangan-bilangan tersebut disimpan dalam representasi 8-bit.
  \begin{parts}
    \part[10] $0$.
    \part[10] $-127$.
    \part[10] $127$.
  \end{parts}
  \begin{solution}
    \vspace{5.0cm}
  \end{solution}
  
  
	\question Sebuah komputer dengan arsitektur sederhana, bernama Simpletron, menggunakan set instruksi seperti yang ditunjukkan dalam tabel di bawah ini. Setiap instruksi yang digunakan oleh komputer Simpletron terdiri atas digit-digit bilangan dalam basis Desimal, \textbf{bukan} dalam basis Biner.
	
	Gunakan tabel \emph{instruction set} Simpletron Language untuk menelusuri apa yang dilakukan oleh program berikut. Gunakan dua digit terakhir NIM untuk bilangan yang diminta oleh program.
	
	\begin{parts}
	  \part[10] Berapa digit yang digunakan oleh arsitektur Simpletron sebagai \emph{opcode}?
	  
	  \part[10] Berapa digit yang digunakan oleh arsitektur Simpletron sebagai \emph{operand}?
	  
	  \part[10] Berapa banyak alamat memori yang bisa diakses oleh arsitektur Simpletron? Dari alamat memori berapa hingga alamat memori berapa?
	  
	  \part[10] Apa yang dilakukan oleh program Simpletron tersebut?
	
	  \part[10] Berapa nilai akhir yang dicetak ke layar I/O mesin Simpletron?
	\end{parts}
	\begin{solution}
	\vspace{3.0cm}
	\end{solution}
	
	\begin{center}
	\begin{tabular}{|r|c|c|c|}
	  \hline
	    Alamat memori & Instruksi & Opcode Simbolik & Perubahan nilai \\
	  \hline
\hline
0 & +1014 & & \\
\hline
1 & +2015 & & \\
\hline
2 & +4210 & & \\
\hline
3 & +2012 & & \\
\hline
4 & +3014 & & \\
\hline
5 & +2112 & & \\
\hline
6 & +2015 & & \\
\hline
7 & +3113 & & \\
\hline
8 & +2115 & & \\
\hline
9 & +4002 & & \\
\hline
10 & +1112 & & \\
\hline
11 & +4016 & & \\
\hline
12 & +0000 & & \\
\hline
13 & +0001 & & \\
\hline
14 & +0000 & & \\
\hline
15 & +0003 & & \\
\hline
16 & +4300 & & \\
\hline
	\end{tabular}
	\end{center}
	
\begin{center}
\begin{tabular}{|c|l|p{0.6\textwidth}|}
\hline
\multicolumn{1}{|c|}{\textbf{Operasi}} &
\multicolumn{1}{c|}{\textbf{Simbolik}} &
\multicolumn{1}{c|}{\textbf{Keterangan}} \\
\hline
\hline
\multicolumn{3}{|c|}{\textbf{Operasi Input/Output}} \\
\hline
+10xx & READ & Membaca satu word data dari keyboard dan menyimpannya ke alamat memori 'xx'. \\
+11xx & WRITE & Menulis satu word data dari lokasi memori 'xx' ke layar monitor. \\
\hline
\multicolumn{3}{|c|}{\textbf{Operasi Load dan Store}} \\
\hline
+20xx & LOAD & Mengambil data dari lokasi memori 'xx' dan meletakkannya di Accumulator. \\
+21xx & STORE & Menyimpan data dari Accumulator ke lokasi memori 'xx'. \\
\hline
\multicolumn{3}{|c|}{\textbf{Operasi Aritmatika}} \\
\hline
+30xx & ADD & Menjumlahkan satu word data di lokasi memori 'xx' dengan satu word data di Accumulator. Hasil penjumlahan disimpan di dalam Accumulator. \\
+31xx & SUB & Mengurangi satu word data di Accumulator dengan bilangan di lokasi memori 'xx'. Hasil pengurangan disimpan di Accumulator. \\
+32xx & DIV & Membagi bilangan yang ada di Accumulator dengan bilangan di lokasi memori 'xx'. Hasil pembagian disimpan di Accumulator. \\
+33xx & MUL & Mengalikan bilangan di Accumulator dengan bilangan di lokasi memori 'xx'. Hasil perkalian disimpan di Accumulator. \\
\hline
\multicolumn{3}{|c|}{\textbf{Operasi Kendali}} \\
\hline
+40xx & BRANCH & Melompat ke instruksi berikutnya yang berada di alamat memori 'xx'. \\
+41xx & BRANCHNEG & Melompat ke instruksi di alamat memori 'xx' jika data di Accumulator nilainya negatif. \\
+42xx & BRANCHZERO & Melompat ke instruksi di alamat memori 'xx' jika data di Accumulator nilainya sama dengan $0$. \\
+4300 & HALT & Menghentikan eksekusi program. \\
\hline
\end{tabular}
\end{center}


\end{questions}
\end{document}
